<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "https://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>

	<bean id="frozenProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames" value="frozenBean" />
		<property name="frozen" value="true" />
		<property name="interceptorNames" value="nopInterceptor" />
	</bean>

	<bean id="_jdkBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<description>Automatically proxies using JDK dynamic proxies</description>
		<property name="beanNames" value="jdk*,onlyJdk,doubleJdk" />
		<property name="interceptorNames" value="nopInterceptor" />
	</bean>

	<bean id="doubleJdkBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames" value="doubleJdk" />
		<property name="interceptorNames" value="nopInterceptor" />
	</bean>

	<bean id="_cglibBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames" value="cglib*" />
		<property name="proxyTargetClass">
			<description>Use the inherited ProxyConfig property to force CGLIB proxying</description>
			<value>true</value>
		</property>
		<property name="interceptorNames">
			<description>Interceptors and Advisors to apply automatically</description>
			<list>
				<value>nopInterceptor</value>
				<value>countingBeforeAdvice</value>
			</list>
		</property>
	</bean>

	<bean id="introductionBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<description>
			Illustrates a JDK introduction
		</description>
		<property name="beanNames" value="*introductionUsingJdk" />
		<property name="interceptorNames">
			<list>
				<value>introductionNopInterceptor</value>
				<value>timestampIntroduction</value>
				<value>lockableAdvisor</value>
			</list>
		</property>
	</bean>

	<bean id="timestampIntroduction" class="org.springframework.aop.testfixture.advice.TimestampIntroductionAdvisor"/>

	<!--
		Stateful mixin. Note that singleton property is false.
	-->
	<bean id="lockableAdvisor" class="org.springframework.aop.testfixture.mixin.LockMixinAdvisor" scope="prototype"/>

	<bean id="countingBeforeAdvice" class="org.springframework.aop.testfixture.advice.CountingBeforeAdvice"/>

	<bean id="nopInterceptor" class="org.springframework.aop.testfixture.interceptor.NopInterceptor"/>

	<bean id="introductionNopInterceptor" class="org.springframework.aop.testfixture.interceptor.NopInterceptor"/>

	<bean id="introductionUsingJdk" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="introductionUsingJdk" />
	</bean>

	<bean id="second-introductionUsingJdk" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="second-introductionUsingJdk" />
	</bean>

	<!--
		Lazy only because it breaks other tests until this test is fixed
	-->
	<bean id="factory-introductionUsingJdk" class="org.springframework.aop.framework.autoproxy.CreatesTestBean"
			lazy-init="true">
	</bean>

	<bean id="jdk1" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="jdk1" />
	</bean>

	<bean id="frozen" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="frozenBean"/>
	</bean>

	<alias name="frozen" alias="frozenBean"/>

	<bean id="cglib1" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="cglib1" />
	</bean>

	<bean id="onlyJdk" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="onlyJdk" />
	</bean>

	<bean id="doubleJdk" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="doubleJdk" />
	</bean>

	<bean id="noproxy" class="org.springframework.beans.testfixture.beans.TestBean">
		<property name="name" value="noproxy" />
	</bean>

	<bean id="lazy1" class="org.springframework.beans.testfixture.beans.TestBean" lazy-init="true">
		<property name="name" value="lazy1" />
	</bean>
	
	<alias name="lazy1" alias="lazy1alias"/>

	<bean id="lazy2" class="org.springframework.beans.testfixture.beans.TestBean" lazy-init="true">
		<property name="name" value="lazy2" />
	</bean>

	<bean id="lazyBeanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames" value="lazy1" />
		<property name="customTargetSourceCreators">
			<bean class="org.springframework.aop.framework.autoproxy.target.LazyInitTargetSourceCreator" />
		</property>
	</bean>

	<bean id="lazyAliasBeanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames" value="lazy1alias" />
		<property name="customTargetSourceCreators">
			<bean class="org.springframework.aop.framework.autoproxy.target.LazyInitTargetSourceCreator" />
		</property>
	</bean>

</beans>
